//###########################################################################
//
// FILE:   DSP281x_GlobalPrototypes.h
//
// TITLE:  Global prototypes for DSP28 Examples 
//###########################################################################
//
//  Ver | dd mmm yyyy | Who  | Description of changes
// =====|=============|======|===============================================
//  1.00| 11 Sep 2003 | L.H. | Changes since previous version (v.58 Alpha)
//      |             |      | Corrected the filename and title in the
//      |             |      | header. 
//      |             |      | Removed unused functions.  Added InitPeripherals()
//###########################################################################

#ifndef DSP281x_GLOBALPROTOTYPES_H
#define DSP281x_GLOBALPROTOTYPES_H

#include <std.h>


#ifdef __cplusplus
extern "C" {
#endif

/*---- shared global function prototypes -----------------------------------*/
extern void InitAdc(void);
extern void ConfigADC(void);
extern void ConfigAdc4Calibrate(void);
extern void CalibrateAdc(void);
extern void GetDcOffset(void);
extern void GetAdcResults(void);
extern void InitPeripherals(void);
extern void InitECan(void);
extern void InitEv(void);
extern void InitGpio(void);
extern void InitMcbsp(void);
extern void InitPieCtrl(void);
extern void InitPieVectTable(void);
extern void EnableInterrupts(void);
extern void Sci_InitPort(void);
extern void InitSpi(void);
extern void InitSysCtrl(void);
extern void InitXintf(void);
extern void InitXIntrupt(void);
extern void InitPll(Uns val);
extern void InitPeripheralClocks(void);

extern void DelayUs(Uns us);
extern void DelayMs(Uns ms);

extern void DSP28x_usDelay(unsigned long Count);

// Watchdog functions
// DSP28_SysCtrl.c
extern void KickDog(void);
extern void DisableDog(void);
extern void EnableDog(void);


// DSP28_DBGIER.asm
//extern void SetDBGIER(Uns dbgier);

////////////////////////////////////////////////////////////
//  F2812 Internal SCI_A, SCI_B:
////////////////////////////////////////////////////////////
//Sci Rx,Tx routings
extern Uns Sci_InqueryRxData(Uns SciPort, Uns *Dest);
extern Uns Sci_InqueryTxReady(Uns SciPort);

//Data handler

////////////////////////////////////////////////////////////
//  Xternal UARTs(TL16C554A, TL16C752):
////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////
//  Flash281x_API_Library:
////////////////////////////////////////////////////////////
//                 CAUTION
// This function MUST be executed out of RAM. Executing it
// out of OTP/Flash will yield unpredictable results
#pragma CODE_SECTION(InitFlash, "FuncsMap2H0SARam")
extern void InitFlash(void);

//#pragma CODE_SECTION(Flash_EraseSectors, "FuncsMap2H0SARam")
//extern Uns Flash_EraseSectors(Uns SecStartNo, Uns SecCnt);

//#pragma CODE_SECTION(Flash_ReadData, "FuncsMap2H0SARam")
//extern void Flash_ReadData(Uns *Dest, Uns SecNo, Uns StartAddrOffset, Uns DataLen);

//#pragma CODE_SECTION(Flash_WriteData, "FuncsMap2H0SARam")
//extern Uns Flash_WriteData(Uns *Src, Uns SecNo, Uns StartAddrOffset, Uns DataLen);



#pragma CODE_SECTION(Calc_CRCByte, "FuncsMap2H0SARam")
extern unsigned int Calc_CRCByte(unsigned int *Buf,unsigned int Len);
#pragma CODE_SECTION(Calc_CRCWord, "FuncsMap2H0SARam")
extern Uns Calc_CRCWord(Uns *Data, Uns DataBits, Uns TotBytes);


#pragma CODE_SECTION(IncIndex, "FuncsMap2H0SARam")
extern void IncIndex(Uns *Index, Uns MaxMask);




extern void InitSysTime(void);
//---------------------------------------------------------------------------
// External symbols created by the linker cmd file
// DSP28 examples will use these to relocate code from one LOAD location 
// in either Flash or XINTF to a different RUN location in internal
// RAM
//extern Uns RamfuncsLoadStart;
//extern Uns RamfuncsLoadEnd;
//extern Uns RamfuncsRunStart;

///////////////////////////////////////////////
//  SysParam.c
///////////////////////////////////////////////



///////////////////////////////////////////////
//  RTC_Access.c
///////////////////////////////////////////////
/*extern void SetClockMode(Uns ClockMode);
extern Uns GetNowTime(Uns *TimeBuf);*/


///////////////////////////////////////////////
//  USB_HostApp.c
///////////////////////////////////////////////











#ifdef __cplusplus
}
#endif /* extern "C" */

#endif   // - end of DSP281x_GLOBALPROTOTYPES_H

